﻿Imports System.Math
Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

Public Class frmSzereg

    Private mvarDbHolder As clsDataBase
    Private mvarUzytkownik As clsUzytkownik
    Private mvarBlokowanie As clsRecordLock
    Private mvarWyznTylkoDoOdczytu As Boolean = False
    Private mvarWyznUruchomienia As Boolean
    Private mvarPozycjaSchematuId As Integer
    Private mvarMaszyna As clsInhTrMaszynaPozycjiSchematu
    Private mvarWymWejsciowy As Double
    Private mvarWymKoncowy As Double
    Private mvarLabelList As List(Of Label)
    Private mvarProcent As Double

    Public Sub New(PozycjaSchematuId As Integer, MaszynaPozycjiSchmematuId As Integer, WymWejsciowy As Double, WymKoncowy As Double)

        ' To wywołanie jest wymagane przez projektanta.
        InitializeComponent()

        ' Dodaj inicjację po wywołaniu funkcji InitializeComponent().
        mvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)

        mvarUzytkownik = CType(clsUzytkownik.Instance(), clsUzytkownik)
        mvarPozycjaSchematuId = PozycjaSchematuId
        mvarMaszyna = New clsInhTrMaszynaPozycjiSchematu(MaszynaPozycjiSchmematuId, mvarDbHolder)
        mvarWymWejsciowy = WymWejsciowy
        mvarWymKoncowy = WymKoncowy
        mvarLabelList = New List(Of Label)
        Blokowanie()
        UzupelnienieDanych()

    End Sub

    Private Sub Blokowanie()

        mvarBlokowanie = New clsRecordLock(VAR_CONNECTION_PARAMETERS, mvarMaszyna.Id, "tracking.maszyna_pozycji_schematu", VAR_ERROR_HANDLER, CInt(mvarUzytkownik.Id))
        If Not mvarBlokowanie.RecordLocked Then
            mvarWyznTylkoDoOdczytu = True
            MessageBox.Show("TYLKO DO ODCZYT.", "WIREMET")
            cmdGotowe.Enabled = False
        End If

    End Sub

    Private Sub UzupelnienieDanych()

        txtWymiarWejsciowy.Text = mvarWymWejsciowy.ToString()
        txtWymiarKoncowy.Text = mvarWymKoncowy.ToString()

        txtMaszyna.Text = mvarMaszyna.Maszyna.Nazwa
        txtNumerMaszyny.Text = mvarMaszyna.Maszyna.Numer.ToString()
        txtWydluzenie1.Text = mvarMaszyna.Maszyna.Wydluzenie_1
        txtWydluzenie2.Text = mvarMaszyna.Maszyna.Wydluzenie_2
        txtIloscKamieni.Text = mvarMaszyna.Maszyna.IloscKamieni.ToString()

        If mvarMaszyna.Szereg Then
            cmdGotowe.Enabled = False
        End If

    End Sub

    Private Sub Oblicz()

        Dim lvarYTxt As Integer = 0
        Dim lvarYLbl As Integer = 0

        Dim lvarWynik As Double
        Dim l1 As Double
        Dim l2 As Double

        Dim l3 As Double
        Dim l4 As Double

        Dim lvarPierwiastek As Double

        'OBLICZENIE 25% Z WYMIARU KONCOWEGO

        'mvarProcent = 


        'OBLICZANIE SZEREGU
        lvarYLbl = lvarYLbl + 16
        lvarYTxt = lvarYTxt + 16
        NowyWiersz(1, Double.Parse(txtWymiarKoncowy.Text) * 1000, lvarYLbl, lvarYTxt)

        l1 = CDbl(txtWydluzenie1.Text) / 100.0
        l2 = l1 + 1
        lvarPierwiastek = Sqrt(l2)

        lvarWynik = Round((Double.Parse(txtWymiarKoncowy.Text) * 1000) * lvarPierwiastek, 3) ' Math.Round(lvarPierwiastek)
        lvarYLbl = lvarYLbl + 16
        lvarYTxt = lvarYTxt + 16
        NowyWiersz(2, CDbl(lvarWynik), lvarYLbl, lvarYTxt)

        For I As Integer = 3 To Integer.Parse(txtIloscKamieni.Text)

            l3 = CDbl(txtWydluzenie2.Text) / 100
            l4 = l3 + 1
            lvarPierwiastek = Sqrt(l4)
            lvarWynik = Round(CDbl(mvarLabelList.Item(mvarLabelList.Count - 1).Text) * lvarPierwiastek, 3)
            lvarYLbl = lvarYLbl + 16
            lvarYTxt = lvarYTxt + 16

            NowyWiersz(I, CDbl(lvarWynik), lvarYLbl, lvarYTxt)

        Next

    End Sub


    Private Sub NowyWiersz(Indeks As Integer, Wartosc As Double, YLbl As Integer, YTxt As Integer)

        Dim lvarLbl As New Label()
        lvarLbl.Location = New Point(6, YLbl)
        lvarLbl.Size = New Size(25, 12)
        lvarLbl.TextAlign = ContentAlignment.BottomRight
        lvarLbl.Font = New Font(Label1.Font.Name, 7, Label1.Font.Style)
        lvarLbl.Text = Indeks.ToString()
        grbSzereg.Controls.Add(lvarLbl)

        Dim lvarTxt As New Label()
        lvarTxt.Location = New Point(40, YTxt)
        lvarTxt.Size = New Size(50, 12)
        lvarTxt.Font = New Font(Label1.Font.Name, 7, Label1.Font.Style)
        lvarTxt.Text = Math.Round(Wartosc).ToString()
        mvarLabelList.Add(lvarTxt)
        grbSzereg.Controls.Add(lvarTxt)
        If Indeks > 11 Then
            Me.Height = Me.Height + 16
        End If

        If mvarWymWejsciowy * 1000 < CDbl(Wartosc) Then
            lvarLbl.Enabled = False
            lvarTxt.Enabled = False
        End If

    End Sub

    'rivate Sub Oblicz()

    'Dim lvarYTxt As Integer = 0
    'Dim lvarYLbl As Integer = 0
    'Dim lvarLicznik As Integer = 0
    'Dim lvarLicznikKolumn As Integer = 1
    'Dim lvarWidth As Integer = 0

    'Dim lvarWynik As Double
    'Dim l1 As Double
    'Dim l2 As Double

    'Dim l3 As Double
    'Dim l4 As Double

    'Dim lvarPierwiastek As Double

    ''OBLICZENIE 25% Z WYMIARU KONCOWEGO

    ''mvarProcent = 


    ''OBLICZANIE SZEREGU
    '    lvarYLbl = lvarYLbl + 16
    '    lvarYTxt = lvarYTxt + 16
    '    NowyWiersz(1, Integer.Parse(txtWymiarKoncowy.Text) * 1000, lvarYLbl, lvarYTxt)

    '    l1 = CDbl(txtWydluzenie1.Text) / 100
    '    l2 = l1 + 1
    '    lvarPierwiastek = Sqrt(l2)

    '    lvarWynik = Round((Integer.Parse(txtWymiarKoncowy.Text) * 1000) * lvarPierwiastek, 3) ' Math.Round(lvarPierwiastek)
    '    lvarYLbl = lvarYLbl + 16
    '    lvarYTxt = lvarYTxt + 16
    '    NowyWiersz(2, CInt(lvarWynik), lvarYLbl, lvarYTxt)

    '    For I As Integer = 3 To Integer.Parse(txtIloscKamieni.Text)

    '        l3 = CDbl(txtWydluzenie2.Text) / 100
    '        l4 = l3 + 1
    '        lvarPierwiastek = Sqrt(l4)
    '        lvarWynik = Round(CDbl(mvarLabelList.Item(mvarLabelList.Count - 1).Text) * lvarPierwiastek, 3)
    '        lvarYLbl = lvarYLbl + 16
    '        lvarYTxt = lvarYTxt + 16

    '        NowyWiersz(I, CInt(lvarWynik), lvarYLbl, lvarYTxt)

    '    Next

    'End Sub


    'Private Sub NowyWiersz(Indeks As Integer, Wartosc As Integer, YLbl As Integer, YTxt As Integer)

    '    Dim lvarLbl As New Label()
    '    lvarLbl.Location = New Point(6, YLbl)
    '    lvarLbl.Size = New Size(25, 12)
    '    lvarLbl.TextAlign = ContentAlignment.BottomRight
    '    lvarLbl.Font = New Font(Label1.Font.Name, 7, Label1.Font.Style)
    '    lvarLbl.Text = Indeks.ToString()
    '    grbSzereg.Controls.Add(lvarLbl)

    '    Dim lvarTxt As New Label()
    '    lvarTxt.Location = New Point(40, YTxt)
    '    lvarTxt.Size = New Size(50, 12)
    '    lvarTxt.Font = New Font(Label1.Font.Name, 7, Label1.Font.Style)
    '    lvarTxt.Text = Math.Round(Wartosc).ToString()
    '    mvarLabelList.Add(lvarTxt)
    '    grbSzereg.Controls.Add(lvarTxt)
    '    If Indeks > 11 Then
    '        Me.Height = Me.Height + 16
    '    End If

    '    If mvarWymWejsciowy * 1000 < CDbl(Wartosc) Then
    '        lvarLbl.Enabled = False
    '        lvarTxt.Enabled = False
    '    End If

    'End Sub

    Private Sub Zapisz()
        With mvarMaszyna
            .Szereg = True
            mvarDbHolder.BeginTrans()
            .Save(mvarDbHolder)
            mvarDbHolder.CommitTrans()
        End With
        cmdGotowe.Enabled = False
        ' Drukuj()
    End Sub

    Private Sub Drukuj()
        Try
            Dim SrednicaCol As New List(Of clsRptSrednicaCiagadlaSzereg)

            For Each lvarLab As Label In mvarLabelList
                If lvarLab.Enabled Then
                    SrednicaCol.Add(New clsRptSrednicaCiagadlaSzereg(lvarLab.Text, mvarPozycjaSchematuId, txtMaszyna.Text))
                End If
            Next

            Dim szeregReport As New SzeregReport()
            szeregReport.PrintOptions.PaperOrientation = PaperOrientation.Portrait
            szeregReport.SetDataSource(SrednicaCol)
            szeregReport.PrintToPrinter(1, False, 0, 0)

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub


    Private Sub cmdGotowe_Click(sender As Object, e As EventArgs) Handles cmdGotowe.Click

        Select Case MsgBox("Czy zapisać zmianę do bazy?", MsgBoxStyle.YesNo, "WIREMET")
            Case MsgBoxResult.No
            Case MsgBoxResult.Yes
                Zapisz()
                Drukuj()
        End Select

    End Sub

    Private Sub cmdDrukuj_Click(sender As Object, e As EventArgs) Handles cmdDrukuj.Click
        Drukuj()
    End Sub


    Private Sub frmSzereg_Load(sender As Object, e As EventArgs) Handles Me.Load
        mvarWyznUruchomienia = True
        Oblicz()
    End Sub

    Private Sub frmSzereg_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        If Not mvarWyznTylkoDoOdczytu Then
            mvarBlokowanie.Unlock()
        End If
        mvarDbHolder.Close()
    End Sub

End Class